package Management;

import java.util.ArrayList;
import java.util.List;

import Entities.Cliente;
import Entities.Empleado;
import Entities.HojaDeRuta;
import Entities.Sucursal;
import bean.dao.ClienteDAO;
import bean.dao.EmpleadoDAO;
import bean.dao.HojaDeRutaDAO;
import bean.dao.SucursalDAO;
import paquetes.negocioVO.ClienteVO;
import paquetes.negocioVO.EmpleadoVO;
import paquetes.negocioVO.HojaDeRutaVO;

public class ManagementHojaDeRuta {

    private static ManagementHojaDeRuta instancia;
	
	public static ManagementHojaDeRuta getInstancia(){
		if(instancia == null)
			instancia = new ManagementHojaDeRuta();
		return instancia;
	}
	

	
	public void definirHojaDeRutaActiva(int idHoja){
		
		
	}
	
	public HojaDeRutaVO hojaDeRutaEntitieAVO(HojaDeRuta h) {
		
		HojaDeRutaVO hojaDeRutaVO = new HojaDeRutaVO();
		
		hojaDeRutaVO.setCosto(h.getCosto());
		hojaDeRutaVO.setDistancia(h.getDistancia());
		hojaDeRutaVO.setRecorrido(h.getRecorrido());
		hojaDeRutaVO.setTiempo(h.getTiempo());
		hojaDeRutaVO.setVigente(h.isVigente());
		hojaDeRutaVO.setSucursalDestino(ManagementSucursal.getInstancia().sucursalEntitieAVO(h.getSucursalDestino()));
		hojaDeRutaVO.setSucursalOrigen(ManagementSucursal.getInstancia().sucursalEntitieAVO(h.getSucursalOrigen()));
		
		return hojaDeRutaVO;	
	}
	
	public HojaDeRuta VOAEntitie(HojaDeRutaVO h){
		
		
		HojaDeRuta hr = new HojaDeRuta();
		
		hr.setCosto(h.getCosto());
		hr.setDistancia(h.getDistancia());
		hr.setRecorrido(h.getRecorrido());
		hr.setTiempo(h.getTiempo());
		hr.setVigente(h.isVigente());
		hr.setSucursalDestino(ManagementSucursal.getInstancia().VOAEntitie(h.getSucursalDestino()));
		hr.setSucursalOrigen(ManagementSucursal.getInstancia().VOAEntitie(h.getSucursalOrigen()));
		
		return hr;
	}

	public List<HojaDeRutaVO> listarHojasDeRuta(int idSuc) {
		try {
			HojaDeRutaDAO miHojaDeRuta = new HojaDeRutaDAO();
			List<HojaDeRuta> hojasDeRuta = miHojaDeRuta.getHojasDeRuta(idSuc);
			List<HojaDeRutaVO> hojasDeRutaVO = new ArrayList<HojaDeRutaVO>();
			for (int i=0;i<hojasDeRuta.size();i++)
			{
				HojaDeRutaVO c = this.hojaDeRutaEntitieAVO(hojasDeRuta.get(i));
				hojasDeRutaVO.add(c);
			}
			return hojasDeRutaVO;
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
		
	}

	public void definirActiva(int idHoja) {
		// TODO Auto-generated method stub
		
	}

	public void crearHojaDeRuta(HojaDeRutaVO hoja, int sucorigen, int sucdestino) {
		
        HojaDeRutaDAO miHojaDeRutaDAO = new HojaDeRutaDAO();
        
		HojaDeRuta hRuta = new HojaDeRuta();
        hRuta.setCosto(hoja.getCosto());
		hRuta.setDistancia(hoja.getDistancia());
		hRuta.setRecorrido(hoja.getRecorrido());
		hRuta.setTiempo(hoja.getTiempo());
		
		hRuta.setVigente(true);

		miHojaDeRutaDAO.altaHojaDeRuta(sucorigen,sucdestino,hRuta);
	}
}
